<?php

namespace App\Http\Controllers\bank;

use App\Http\Controllers\common\LMReturn;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
#订单表
use App\Models\OrderList;
#基础银行表
use App\Models\Bank;
#银行卡表
use App\Models\BankCard;

//这个是银行的控制器
class BankController extends Controller
{
    //银行的添加和修改
    public function BaseBankSave(Request $request)
    {
        //去验证token值
        $tokenInfo = json_decode($this->verifyTokenLm(), true);
        //判断传递过来的token的code码是否等于400  如果是400的话，提示token不正确
        if ($tokenInfo['code'] == 400) {
            return LMReturn::Error($tokenInfo['msg'], $tokenInfo['code']);
        }
        //接收前端传递过来的值
        $all = $request->all();
        //通过是否传递了ID 来判断是添加还是修改
        if (!array_key_exists("id", $all)) {
            //这里是添加  判断唯一性
            $info = json_decode(Bank::where("bank_name", $all['bank_name'])->first(), true);
            if (is_null($info)) {
                //这里是正常添加
                $res = Bank::create($all);
                $msg1 = '银行添加成功';
                $msg2 = '银行添加失败';
                return LMReturn::sqlRes($res, $msg1, $msg2);
            } else {
                //这里给出提示，名称已存在
                return LMReturn::Error("名称已存在");
            }
        } else {
            //这里是修改
            $res = Bank::where("id", $all['id'])->update($all);
            $msg1 = '银行修改成功';
            $msg2 = '银行修改失败';
            return LMReturn::sqlRes($res, $msg1, $msg2);
        }
    }

    //银行删除
    public function BaseBankDelete(Request $request)
    {
        //去验证token值
        $tokenInfo = json_decode($this->verifyTokenLm(), true);
        //判断传递过来的token的code码是否等于400  如果是400的话，提示token不正确
        if ($tokenInfo['code'] == 400) {
            return LMReturn::Error($tokenInfo['msg'], $tokenInfo['code']);
        }
        //接收前端传递过来的值
        $all = $request->all();
        //去查询是否使用过这个银行，如果使用过不能删除
        $info = json_decode(BankCard::where("bank_id", $all['id'])->get(), true);
        if (empty($info)) {
            // 删除
            $res = Bank::where("id", $all['id'])->delete();
            return LMReturn::sqlRes($res, '删除成功', '删除失败');
        } else {
            return LMReturn::Error("银行已被使用，请删除关联数据之后在进行操作");
        }
    }

    //银行列表
    public function BaseBankList(Request $request)
    {
        //去验证token值
        $tokenInfo = json_decode($this->verifyTokenLm(), true);
        //判断传递过来的token的code码是否等于400  如果是400的话，提示token不正确
        if ($tokenInfo['code'] == 400) {
            return LMReturn::Error($tokenInfo['msg'], $tokenInfo['code']);
        }
        //接收前端传递过来的值
        $all = $request->all();
        // dd($all);
        $where = [];

        if (isset($all['type'])) {
            $bType = $all['type'];
            // dd($bType);
            if ($bType == '1' or $bType == '2') {
                $where[] = ['type', $bType];
            }
        }
        // dd($where);
        $pageSize = 10000;
        if (isset($all['size'])) {
            $pageSize = $all['size'];
        }
        //将这个进行关闭
        $info = json_decode(
            json_encode(
                Bank::select(
                    "bank.id",
                    "bank.bank_name",
                    "bank.type",
                    "bank.weight",
                    "bank.create_time",
                    "bank.update_time",
                )
                    ->where($where)
                    ->orderBy("weight", "desc")
                    ->paginate($pageSize)
            ),
            true
        );
        return LMReturn::Success($info);
    }
}
